package com.company.command_chain.CommandChain;

import java.util.ArrayList;
import java.util.List;

/**
 * @author cbf4Life cbf4life@126.com
 * I'm glad to share my knowledge with you all.
 * 所有的命令在这里定义
 */
public enum CommandEnum {
	//注意这里并不是一个class，而是一个enum
	//其中，df和ls是name of enum constant，enum的常量的名称
	//"com.company.command.LSCommand"是constant，enum的常量
	ls("com.company.command_chain.CommandChain.command.LSCommand"),
	df("com.company.command_chain.CommandChain.command.DFCommand");
	
	private String value = "";
	
	//定义构造函数，目的是Data(value)类型的相匹配
	private CommandEnum(String value){
		this.value = value;
	}
	
	
	public String getValue(){
		return this.value;
	}
	
	//返回所有的enum对象
	public static List<String> getNames(){
		//这里得到的commandEnum当中，就是“df”和“ls”，commandEnum是一个enum的数组
		//CommandEnum.values();将所有enum的可能列举值都返回。
		CommandEnum[] commandEnum = CommandEnum.values();
		List<String> names = new ArrayList<String>();
		//将commandEnum当中的名称放到names当中
		//c是本enum的变量，c.name()返回此枚举常量的名称，返回值为String类型。
		//enum的name方法：Returns the name of this enum constant, exactly as declared in its enum declaration.
		for(CommandEnum c:commandEnum){
			names.add(c.name());
		}
		//这里返回的即为本enum可以枚举的所有的值的字符串
		return names;
	}
	
}
